package com.scms.secondclass.domain;

import java.math.BigDecimal;
import java.util.Date;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Future;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.scms.common.annotation.Excel;
import com.scms.common.core.domain.BaseEntity;

/**
 * 活动信息对象 activity
 * 
 * @author scms
 */
public class Activity extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 活动ID */
    private Long activityId;

    /** 活动标题 */
    @Excel(name = "活动标题")
    @NotBlank(message = "活动标题不能为空")
    @Size(min = 0, max = 100, message = "活动标题长度不能超过100个字符")
    private String title;

    /** 活动分类ID */
    @Excel(name = "活动分类ID")
    @NotNull(message = "活动分类不能为空")
    private Long categoryId;

    /** 活动分类名称 */
    @Excel(name = "活动分类")
    private String categoryName;

    /** 活动描述 */
    @Excel(name = "活动描述")
    private String description;

    /** 活动地点 */
    @Excel(name = "活动地点")
    private String location;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "开始时间不能为空")
    private Date startTime;

    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "结束时间不能为空")
    private Date endTime;

    /** 报名开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "报名开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "报名开始时间不能为空")
    private Date signupStartTime;

    /** 报名结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "报名结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "报名结束时间不能为空")
    private Date signupEndTime;

    /** 最大参与人数 */
    @Excel(name = "最大参与人数")
    private Long maxParticipants;

    /** 活动学分 */
    @Excel(name = "活动学分")
    @NotNull(message = "活动学分不能为空")
    @DecimalMin(value = "0.01", message = "活动学分不能小于0.01")
    private BigDecimal creditValue;

    /** 状态（0待审核 1已通过 2已拒绝 3已取消 4已结束） */
    @Excel(name = "状态", readConverterExp = "0=待审核,1=已通过,2=已拒绝,3=已取消,4=已结束")
    private String status;

    /** 状态名称 */
    @Excel(name = "状态")
    private String statusName;

    public Long getActivityId() 
    {
        return activityId;
    }

    public void setActivityId(Long activityId) 
    {
        this.activityId = activityId;
    }

    public String getTitle() 
    {
        return title;
    }

    public void setTitle(String title) 
    {
        this.title = title;
    }

    public Long getCategoryId() 
    {
        return categoryId;
    }

    public void setCategoryId(Long categoryId) 
    {
        this.categoryId = categoryId;
    }

    public String getCategoryName() 
    {
        return categoryName;
    }

    public void setCategoryName(String categoryName) 
    {
        this.categoryName = categoryName;
    }

    public String getDescription() 
    {
        return description;
    }

    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getLocation() 
    {
        return location;
    }

    public void setLocation(String location) 
    {
        this.location = location;
    }

    public Date getStartTime() 
    {
        return startTime;
    }

    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }

    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getSignupStartTime() 
    {
        return signupStartTime;
    }

    public void setSignupStartTime(Date signupStartTime) 
    {
        this.signupStartTime = signupStartTime;
    }

    public Date getSignupEndTime() 
    {
        return signupEndTime;
    }

    public void setSignupEndTime(Date signupEndTime) 
    {
        this.signupEndTime = signupEndTime;
    }

    public Long getMaxParticipants() 
    {
        return maxParticipants;
    }

    public void setMaxParticipants(Long maxParticipants) 
    {
        this.maxParticipants = maxParticipants;
    }

    public BigDecimal getCreditValue() 
    {
        return creditValue;
    }

    public void setCreditValue(BigDecimal creditValue) 
    {
        this.creditValue = creditValue;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatusName() 
    {
        return statusName;
    }

    public void setStatusName(String statusName) 
    {
        this.statusName = statusName;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
            .append("activityId", getActivityId())
            .append("title", getTitle())
            .append("categoryId", getCategoryId())
            .append("categoryName", getCategoryName())
            .append("description", getDescription())
            .append("location", getLocation())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("signupStartTime", getSignupStartTime())
            .append("signupEndTime", getSignupEndTime())
            .append("maxParticipants", getMaxParticipants())
            .append("creditValue", getCreditValue())
            .append("status", getStatus())
            .append("statusName", getStatusName())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
} 